package cn.lingyangwl.agile.msg.push.model.entity;

import cn.lingyangwl.agile.model.*;
import cn.lingyangwl.agile.msg.push.api.constatnts.*;
import cn.lingyangwl.agile.tenant.core.*;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;

/**
 * 消息通知
 *
 * @author shenguangyang
 */
@Getter
@Setter
@TableName(value = "mps_msg_notice")
@DataIsolation(filterTenant = true, tableName = "mps_msg_notice")
public class MsgNotice extends BasePlusPO {
    @TableId
	private Long id;

	/**
	 * 消息名称
	 */
	private String name;

	/**
	 * 消息编码
	 */
	private String code;

	/**
	 * 渠道类型
	 */
	private String channelTypes;

	/**
	 * 消息字段
	 */
	private String msgFields;

	/**
	 * 接收者类型, 如果是会员通知, 则在代码中可以指定任意用户推送, 否则采用绑定的用户
	 * @see MsgCons.ReceiverType
	 */
	private String receiverType;

	/**
	 * 消息功能组id
	 */
	private Long groupId;

	/**
	 * 启用或者禁用
	 */
	@DataPartIsolation
	private Boolean status;

	@DataPartIsolation
	private String remark;

	/**
	 * 是否被删除, 逻辑删除
	 */
	private Boolean deleted;


	@Data
	public static class MsgField {
		/**
		 * 字段描述
		 */
		private String desc;
		/**
		 * 消息字段
		 */
		private String key;
		/**
		 * 排序
		 */
		private Integer sortNo;
		/**
		 * 是否可以编辑模板字段内容
		 */
		private Boolean editTpl;
	}

    public static LambdaQueryWrapper<MsgNotice> lqw() {
		return Wrappers.lambdaQuery();
	}

	public static LambdaUpdateWrapper<MsgNotice> luw() {
		return Wrappers.lambdaUpdate();
	}

}
